package com.ww.basic.simple

object SimpleTest2 {
  // 1. 高阶函数参数简化（函数作为参数）
  def processList(list: List[Int], f: Int => Int): List[Int] = list.map(f)

  def main(args: Array[String]): Unit = {
    val list = List(2, 3, 4, 5)
    // 完整调用：processList(list, (x: Int) => x * 2)
    processList(list, _ * 2) // 简化：省参数类型 + 名

    // 2. SAM转换（适配Java函数式接口）
    import java.util.function.Consumer
    val javaList = java.util.Arrays.asList(1, 2, 3)
    // 完整：javaList.forEach(new Consumer[Int] { override def accept(x: Int): Unit = println(x) })
    javaList.forEach(x => println(x)) // Lambda替代匿名内部类
    javaList.forEach(println(_))
    javaList.forEach(println)

    // 3. 柯里化方法简化
    def multiply(a: Int)(b: Int): Int = a * b
    val double = multiply(2)_ // 部分应用函数：固定第一个参数
    double(3) // 结果6
  }

}